perm filename PNEW.SAI[PNT,HE]2 blob
sn#478475 filedate 1979-09-29 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00003 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY
C00007 00003 PROCEDURE XERROR
C00010 ENDMK
C⊗;
ENTRY;
BEGIN "PNEW"
COMMENT routines which are not available in AL;
DEFINE $PNEW=TRUE,$ALTER_EGO=TRUE;
REQUIRE "HEADER.SAI" SOURCE_FILE;
IFC FALSE THENC
INTERNAL BOOLEAN PROCEDURE SSWAP(STRING COREIMAGEFILE);
BEGIN BOOLEAN NEWCOREIMAGE;
EXTERNAL INTEGER JOBSA;
INTEGER ARRAY ACS[0:15]; ! temporary storage for accumulators;
INTEGER AACS0,AACS15,AACS14; ! address of ACS[0],ACS[15],ACS[14];
LABEL RESUME;
INTEGER ARRAY SAVADR[0:4];
INTEGER SWAPWORD;
AACS0←LOCATION(ACS[0]);
AACS15←LOCATION(ACS[15]);
AACS14←LOCATION(ACS[14]);
SAVADR[0]←CVSIX("DSK");
SAVADR[1]←CVFIL(COREIMAGEFILE,SAVADR[2],SAVADR[4]);
NEWCOREIMAGE←TRUE;
SWAPWORD←LOCATION(SAVADR[0]) LSH 18;
PRESWAP;
quick_code
MOVEM 15,@AACS15; COMMENT SAVE ACCUMS ;
MOVE 15,AACS0;
BLT 15,@AACS14;
MOVEI 1,RESUME;
MOVEM 1,JOBSA;
MOVE 15,SWAPWORD;
CALLI 15,'400004; ! swap to E ;
SETZM 1,NEWCOREIMAGE; ! clear to return false if same core image ;
RESUME: JFCL ; ! no-op;
JFCL ; ! restore accumulators;
MOVS 15,AACS0; ! get address of AC[0];
BLT 15,15; ! BLT into memory;
end;
POSTSWAP;
RETURN(NEWCOREIMAGE);
END;
ENDC
PROCEDURE XERROR;
ERROR(TOKEN," is a dummy statement, use some other word");
INTERNAL PROCEDURE FOOCALL(INTEGER I);
XERROR;
END "PNEW"